package py.edu.ucom.cadira.game.war;

import java.util.List;

import org.jdom.Element;

/**
 * 
 * @author WaterlooTeam
 *Esta clase es el tablero logico del juego, que se define como una matriz 
 *del tipo Square
 */
public class Board {
	private Square [][] square;
	/**
	 * Constructor de la clase Board que lo que hace es inicializar los
	 * atributos de esta clase
	 */
	
	public Board() {
		this.square= new Square[10][10];
		this.initializeSquareInBoard();
		
	}
	/**
	 * Este metodo lo que realiza es la inicializacion del tablero con casillas
	 * vacias
	 */
	public void initializeSquareInBoard(){
    	for(int i=0;i<10;i++){
        	for(int j=0;j<10;j++){
            	this.square[i][j]=new Square(i,j);
            }
        }
    	this.square[4][2].setEsAgua(true);
    	this.square[4][3].setEsAgua(true);
    	this.square[4][6].setEsAgua(true);
    	this.square[4][7].setEsAgua(true);
    	this.square[5][2].setEsAgua(true);
    	this.square[5][3].setEsAgua(true);
    	this.square[5][6].setEsAgua(true);
    	this.square[5][7].setEsAgua(true);
    	
    }
	public void setTabInBoard(int posicionX,int posicionY,Tab tab){
		square[posicionX][posicionY].setTab(tab);
    }

	public Square getSquareFromBoard(int i,int j){
		return square[i][j];
	}
	public void setSquareInBoard(int i,int j,Square c){
		this.square[i][j]=c;
	}
    public Element toXml(Element tableroNode) {
        Element fichaNode = null;
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (this.getSquareFromBoard(i, j).getTab().getValor() != -1) {
                    fichaNode = new Element("ficha");
                    this.getSquareFromBoard(i, j).getTab().toXml(fichaNode);
                    this.getSquareFromBoard(i, j).toXml(fichaNode);
                    tableroNode.addContent(fichaNode);
                }
            }
        }
        return tableroNode;
    }
    @SuppressWarnings("unchecked")
	public Board fromXml (Element doc){
        List<Element> fichaNode = doc.getChildren("ficha");
        Tab tab = null;
        Square square = null;
        for(Element fichasNode: fichaNode){
            square = new Square();
            square.fromXml(fichasNode);
            tab = new Tab();
            tab.fromXml(fichasNode);
                square.setTab(tab);
                this.setSquareInBoard(square.getPosX(),square.getPosY(),square);
            
        }
        return this;
    }
}
